package com.bbva.general.dao.jdbc;

import java.sql.Types;
import java.util.HashMap;
import java.util.Map;

import javax.sql.DataSource;

import org.springframework.jdbc.core.SqlOutParameter;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.object.StoredProcedure;

import com.bbva.general.entities.Carga;
import com.bbva.general.util.NegocioException;

public class CargaDAOInsertar extends StoredProcedure
{

	private static String strProcedure = "IITG.SP_CARGA_INSERTAR";

	public CargaDAOInsertar(DataSource DS)
	{
		super(DS, strProcedure);
		declareParameter(new SqlOutParameter("pIDCARGA", Types.VARCHAR));
		declareParameter(new SqlParameter("pIDARCHIVO", Types.INTEGER));
		declareParameter(new SqlParameter("pFECHA_CARGA", Types.DATE));
		declareParameter(new SqlParameter("pRUTA_ARCHIVO", Types.VARCHAR));
		declareParameter(new SqlParameter("pNOMBRE_ARCHIVO", Types.VARCHAR));
		declareParameter(new SqlParameter("pIDESTADO_PROCESO", Types.INTEGER));
		declareParameter(new SqlParameter("pIDTIPO_CARGA", Types.INTEGER));
		declareParameter(new SqlParameter("pHORA_INICIO", Types.VARCHAR));
		declareParameter(new SqlParameter("pUSUARIO_CREACION", Types.CHAR));
		compile();
	}

	@SuppressWarnings(value = { "unchecked" })
	public String Insertar(Carga objCarga) throws Exception
	{
		Map parametros = new HashMap(8);
		parametros.put("pIDARCHIVO", objCarga.getIdArchivoCarga());
		parametros.put("pFECHA_CARGA", objCarga.getFechaCarga());
		parametros.put("pRUTA_ARCHIVO", objCarga.getRutaArchivo());
		parametros.put("pNOMBRE_ARCHIVO", objCarga.getNombreArchivo());
		parametros.put("pIDESTADO_PROCESO", objCarga.getIdEstadoProceso());
		parametros.put("pIDTIPO_CARGA", objCarga.getIdTipoCarga());
		parametros.put("pHORA_INICIO", objCarga.getHoraInicio());
		parametros.put("pUSUARIO_CREACION", objCarga.getUsuarioCreacion());
		Map psalida = execute(parametros);
		if (psalida.size() > 0)
		{
			return (String)psalida.get("pIDCARGA");
		}
		else
		{
			return "";
		}
	}
}
